﻿using ProyectoDeTesis.Controladores;
using ProyectoDeTesis.Modelos.Filtros;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class Personal : Form
    {
        private int pantalla_id = 7;
        private PersonalController personalController = new PersonalController();
        private PerfilController perfilController = new PerfilController();
        private int personal_id_seleccionado = 0;
        public Personal()
        {
            InitializeComponent();
            cargarComboPerfil();
        }


        private void cargarComboPerfil()
        {
            List<ProyectoDeTesis.Perfil> listaPerfil = perfilController.CargarPerfil();

            ProyectoDeTesis.Perfil perfilDefault = new ProyectoDeTesis.Perfil();

            perfilDefault.id = 0;
            perfilDefault.nombre = "Seleccione Perfil";

            listaPerfil.Insert(0, perfilDefault);

            CmbPerfil.DataSource = listaPerfil;
            CmbPerfil.DisplayMember = "nombre";
            CmbPerfil.ValueMember = "id";
            DataGridBusqueda.DataSource = null;
        }

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void BtnSearch_MouseLeave(object sender, EventArgs e)
        {
            System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
            ToolTip1.SetToolTip(BtnSearch, "Buscar");
        }

        private void BtnLimpiar_MouseLeave(object sender, EventArgs e)
        {
            System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
            ToolTip1.SetToolTip(BtnLimpiar, "Limpiar Campos");
        }

        private void BtnNuevo_Click(object sender, EventArgs e)
        {
            NuevoUsuario nuevo = new NuevoUsuario();
            nuevo.ShowDialog(this);
            cargarTabla();
        }

        private void cargarTabla()
        {
            FiltroPersonal filtro = new FiltroPersonal();
            filtro.apellido_materno = "";
            filtro.apellido_paterno = "";
            filtro.perfil_id = 0;
            filtro.usuario = "";

            mostrarDatosTabla(filtro);
        }

        private void mostrarDatosTabla(FiltroPersonal filtro)
        {
            List<PerfilPersonal> listaPerfilPersonal = personalController.buscarTodosPerfiles(filtro);

            BindingSource bindingSource1 = new BindingSource();

            bindingSource1.DataSource = (from pp in listaPerfilPersonal
                                         select new { pp.id, pp.Usuario.nombre_usuario, pp.nombre, pp.ap_paterno, pp.ap_materno, pp.estado, pp.correo, pp.telefono, pp.direccion });

            DataGridBusqueda.DataSource = bindingSource1;
            DataGridBusqueda.Columns[0].Visible = false;
            DataGridBusqueda.Columns[1].HeaderText = "Usuario";
            DataGridBusqueda.Columns[2].HeaderText = "Nombre";
            DataGridBusqueda.Columns[3].HeaderText = "Apellido Paterno";
            DataGridBusqueda.Columns[4].HeaderText = "Apellido Materno";
            DataGridBusqueda.Columns[5].HeaderText = "Estado";
            DataGridBusqueda.Columns[6].HeaderText = "Correo";
            DataGridBusqueda.Columns[7].HeaderText = "Telefono";
            DataGridBusqueda.Columns[8].HeaderText = "Dirección";
            DataGridBusqueda.Columns[1].Width = 80;
            DataGridBusqueda.Columns[2].Width = 80;
            DataGridBusqueda.Columns[3].Width = 140;
            DataGridBusqueda.Columns[4].Width = 140;
            DataGridBusqueda.Columns[5].Width = 70;
            DataGridBusqueda.Columns[6].Width = 140;
            DataGridBusqueda.Columns[7].Width = 80;
            DataGridBusqueda.Columns[8].Width = 200;
        }

        private void nuevoPersonalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NuevoUsuario nuevo = new NuevoUsuario();
            nuevo.ShowDialog(this);
        }

        private void BtnRemove_Click(object sender, EventArgs e)
        {
            if (this.personal_id_seleccionado > 0)
            {
                if (personalController.eliminarPerfilPersonal(this.personal_id_seleccionado))
                {
                    MessageBox.Show("Se eliminó el usuario correctamente.");
                    cargarTabla();
                }
            }
            else 
            {
                MessageBox.Show("Debe seleccionar una fila primero.");
            }
        }

        private void BtnPerfil_Click(object sender, EventArgs e)
        {
            NuevoPerfil nperfil = new NuevoPerfil();
            nperfil.ShowDialog(this);
        }

        private void inicioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void Personal_Load(object sender, EventArgs e)
        {

        }

        private void BtnPersonal_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Personal personal = new Personal();
            personal.ShowDialog(this);
        }

        private void BtnPerfil_Click_1(object sender, EventArgs e)
        {
            this.Dispose();
            Perfil perfil = new Perfil();
            perfil.ShowDialog(this);
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void BtnEditar_Click(object sender, EventArgs e)
        {
            if (this.personal_id_seleccionado > 0)
            {
                EditarUsuario editar = new EditarUsuario(this.personal_id_seleccionado);
                editar.ShowDialog(this);
                if (editar.resultadoVentana)
                {
                    cargarTabla();
                }
            }
            else 
            {
                MessageBox.Show("Debe seleccionar una fila primero");
            }            
        }

        private void btnadministrarPersonal_Click(object sender, EventArgs e)
        {
            Personal personal = new Personal();
            personal.ShowDialog(this);
        }

        private void BtnLimpiar_Click(object sender, EventArgs e)
        {
            textUsuario.Clear();
            textApMaterno.Clear();
            textApPaterno.Clear();
            CmbPerfil.SelectedIndex = -1;
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void BtnSearch_Click(object sender, EventArgs e)
        {
            FiltroPersonal filtro = new FiltroPersonal();
            filtro.apellido_materno = textApMaterno.Text;
            filtro.apellido_paterno = textApPaterno.Text;
            filtro.perfil_id = CmbPerfil.SelectedIndex > -1 ? Convert.ToInt32(CmbPerfil.SelectedValue) : 0;
            filtro.usuario = textUsuario.Text;

            mostrarDatosTabla(filtro);
        }

        private void DataGridBusqueda_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }

        private void btnadministrarPerfil_Click(object sender, EventArgs e)
        {
            Perfil perfil = new Perfil();
            perfil.ShowDialog(this);
        }

        private void btnauditoria_Click(object sender, EventArgs e)
        {
            Auditoria auditoria = new Auditoria();
            auditoria.ShowDialog(this);
        }

        private void btnadministrarPuertaDeEmbarque_Click(object sender, EventArgs e)
        {
            this.Dispose();
            PuertaEmbarque puerta = new PuertaEmbarque();
            puerta.ShowDialog();
        }

        private void btnconsultarDistanciaAPistaPrincipal_Click(object sender, EventArgs e)
        {
            this.Dispose();
            ConsultarDistanciaPistaPrincipal consulta = new ConsultarDistanciaPistaPrincipal();
            consulta.ShowDialog();
        }

        private void btnconfiguracion_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Configuracion config = new Configuracion();
            config.ShowDialog();
        }

        private void btnhistorialDeSimulaciones_Click(object sender, EventArgs e)
        {
            this.Dispose();
            HistorialSimulacion historial = new HistorialSimulacion();
            historial.ShowDialog();            
        }

        private void btniniciarSimulacion_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Simulacion simulacion = new Simulacion();
            simulacion.ShowDialog();
        }

        private void btnlecturaDeVuelos_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Lectura lectura = new Lectura();
            lectura.ShowDialog();
        }

        private void BtnAdministrarVuelos_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Vuelo vuelo = new Vuelo();
            vuelo.ShowDialog();
        }

        private void btnprogramaciónDeVuelos_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Plan plan = new Plan();
            plan.ShowDialog();                        
        }

        private void btnpendientesDeAprobacion_Click(object sender, EventArgs e)
        {
            PendienteAprobacion pendiente = new PendienteAprobacion();
            pendiente.ShowDialog();
        }

        private void btnestadoDeVuelos_Click(object sender, EventArgs e)
        {
            this.Dispose();
            EstadoVuelos estado = new EstadoVuelos();
            estado.ShowDialog();
        }

        private void DataGridBusqueda_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = DataGridBusqueda.Rows[e.RowIndex];

                personal_id_seleccionado = Convert.ToInt32(row.Cells[0].Value);
            }
        }


       
    }
}
